\section{R\'{e}f\'{e}rence du fichier debug.h}
\label{debug_8h}\index{debug.h@{debug.h}}
Fonctions d'erreur et de debug du compilateur. 

{\tt \#include $<$string$>$}\par


Graphe des d\'{e}pendances par inclusion de debug.h:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=84pt]{debug_8h__incl}
\end{center}
\end{figure}


Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=108pt]{debug_8h__dep__incl}
\end{center}
\end{figure}
\subsection*{Namespaces}
\begin{CompactItemize}
\item 
namespace {\bf std}
\end{CompactItemize}
\subsection*{Messages d'erreur}
D\'{e}finition des messages d'erreurs courants. \begin{CompactItemize}
\item 
\#define {\bf ERR\_\-UNDECLARED}(strid)~\char`\"{}variable '\char`\"{} + hash\-Table $\rightarrow$ get\-Var\-Name(strid) + \char`\"{}' non d\'{e}clar\'{e}e\char`\"{}
\item 
\#define {\bf ERR\_\-REDECLARE}(strid)~\char`\"{}red\'{e}claration de '\char`\"{}+hash\-Table $\rightarrow$ get\-Var\-Name(strid)+\char`\"{}' ignor\'{e}e\char`\"{}
\item 
\#define {\bf ERR\_\-CONVERT\_\-INVALID}(t1, t2)~\char`\"{}conversion de '\char`\"{}+(t1).to\-String()+\char`\"{}' vers '\char`\"{}+(t2).to\-String()+\char`\"{}' impossible\char`\"{}
\item 
\#define {\bf ERR\_\-CONVERT\_\-LOSS}(t1, t2)~\char`\"{}conversion de '\char`\"{}+(t1).to\-String()+\char`\"{}' vers '\char`\"{}+(t2).to\-String()+\char`\"{}' : type plus faible\char`\"{}
\item 
\#define {\bf ERR\_\-CONVERT\_\-UNCOMPATIBLE}(t1, t2)~\char`\"{}types '\char`\"{}+(t1).to\-String()+\char`\"{}' et '\char`\"{}+(t2).to\-String()+\char`\"{}' incompatibles\char`\"{}
\item 
\#define {\bf ERR\_\-OP\_\-UNCOMPATIBLE}(s)~\char`\"{}types incompatibles pour l'op\'{e}ration '\char`\"{} s \char`\"{}'\char`\"{}
\item 
\#define {\bf ERR\_\-DEREF\_\-NONPOINTER}(t)~\char`\"{}le type '\char`\"{}+(t).to\-String()+\char`\"{}' n'est pas d\'{e}r\'{e}f\'{e}rencable\char`\"{}
\item 
\#define {\bf ERR\_\-REFAFF\_\-REF}~\char`\"{}l'affectation par r\'{e}f\'{e}rence doit prendre en entr\'{e}e un pointeur\char`\"{}
\end{CompactItemize}
\subsection*{Macros}
\begin{CompactItemize}
\item 
\#define {\bf DEBUG\_\-MSG}~0x01
\begin{CompactList}\small\item\em Affichage des messages de debug. \item\end{CompactList}\item 
\#define {\bf DEBUG\_\-LEXEMES}~0x02
\begin{CompactList}\small\item\em Affichage des lex\`{e}mes lus. \item\end{CompactList}\end{CompactItemize}
\subsection*{Fonctions}
\begin{CompactItemize}
\item 
void {\bf error\-Warning} (string str)
\begin{CompactList}\small\item\em Erreur de type warning (niveau 1). \item\end{CompactList}\item 
void {\bf error\-Error} (string str)
\begin{CompactList}\small\item\em Erreur de type error (niveau 2). \item\end{CompactList}\item 
void {\bf error\-Fatal} (string str)
\begin{CompactList}\small\item\em Erreur de type fatal (niveau 3). \item\end{CompactList}\item 
void {\bf free\-Memory} ()
\begin{CompactList}\small\item\em Lib\`{e}re la m\'{e}moire pour quitter le programme proprement. \item\end{CompactList}\item 
int {\bf yyerror} (char $\ast$str)
\begin{CompactList}\small\item\em Fonction d'erreur de yacc/bison, on \char`\"{}redirige\char`\"{} l'erreur vers error\-Fatal. \item\end{CompactList}\item 
void {\bf set\-Debug\-Level} (int argc, char $\ast$$\ast$argv)
\begin{CompactList}\small\item\em Fixe le niveau de debug. \item\end{CompactList}\item 
void {\bf debug\-Echo} (string)
\begin{CompactList}\small\item\em Affiche un message de debug. \item\end{CompactList}\item 
void {\bf debug\-Lexeme} (char $\ast$)
\begin{CompactList}\small\item\em Affiche un lex\`{e}me lu,. \item\end{CompactList}\end{CompactItemize}


\subsection{Description d\'{e}taill\'{e}e}
Fonctions d'erreur et de debug du compilateur. 



D\'{e}finition dans le fichier {\bf debug.h}.

\subsection{Documentation des macros}
\index{debug.h@{debug.h}!DEBUG_LEXEMES@{DEBUG\_\-LEXEMES}}
\index{DEBUG_LEXEMES@{DEBUG\_\-LEXEMES}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define DEBUG\_\-LEXEMES~0x02}\label{debug_8h_34b13cc48ae186099caed0a8c895ad17}


Affichage des lex\`{e}mes lus. 



D\'{e}finition \`{a} la ligne 33 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par debug\-Lexeme(), et set\-Debug\-Level().\index{debug.h@{debug.h}!DEBUG_MSG@{DEBUG\_\-MSG}}
\index{DEBUG_MSG@{DEBUG\_\-MSG}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define DEBUG\_\-MSG~0x01}\label{debug_8h_3b49d32c5b27e799cab2b420d43b36b3}


Affichage des messages de debug. 



D\'{e}finition \`{a} la ligne 30 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par debug\-Echo(), et set\-Debug\-Level().\index{debug.h@{debug.h}!ERR_CONVERT_INVALID@{ERR\_\-CONVERT\_\-INVALID}}
\index{ERR_CONVERT_INVALID@{ERR\_\-CONVERT\_\-INVALID}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-CONVERT\_\-INVALID(t1, t2)~\char`\"{}conversion de '\char`\"{}+(t1).to\-String()+\char`\"{}' vers '\char`\"{}+(t2).to\-String()+\char`\"{}' impossible\char`\"{}}\label{debug_8h_e804c0000e73d6d774c312dafecb8c14}




D\'{e}finition \`{a} la ligne 20 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par CSymbol::convert().\index{debug.h@{debug.h}!ERR_CONVERT_LOSS@{ERR\_\-CONVERT\_\-LOSS}}
\index{ERR_CONVERT_LOSS@{ERR\_\-CONVERT\_\-LOSS}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-CONVERT\_\-LOSS(t1, t2)~\char`\"{}conversion de '\char`\"{}+(t1).to\-String()+\char`\"{}' vers '\char`\"{}+(t2).to\-String()+\char`\"{}' : type plus faible\char`\"{}}\label{debug_8h_517e71e9a3b57b7a795e392eb5f280c8}




D\'{e}finition \`{a} la ligne 21 du fichier debug.h.\index{debug.h@{debug.h}!ERR_CONVERT_UNCOMPATIBLE@{ERR\_\-CONVERT\_\-UNCOMPATIBLE}}
\index{ERR_CONVERT_UNCOMPATIBLE@{ERR\_\-CONVERT\_\-UNCOMPATIBLE}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-CONVERT\_\-UNCOMPATIBLE(t1, t2)~\char`\"{}types '\char`\"{}+(t1).to\-String()+\char`\"{}' et '\char`\"{}+(t2).to\-String()+\char`\"{}' incompatibles\char`\"{}}\label{debug_8h_dbdadac0ead5666d9316922bf611b308}




D\'{e}finition \`{a} la ligne 22 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par CSymbol::convert2().\index{debug.h@{debug.h}!ERR_DEREF_NONPOINTER@{ERR\_\-DEREF\_\-NONPOINTER}}
\index{ERR_DEREF_NONPOINTER@{ERR\_\-DEREF\_\-NONPOINTER}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-DEREF\_\-NONPOINTER(t)~\char`\"{}le type '\char`\"{}+(t).to\-String()+\char`\"{}' n'est pas d\'{e}r\'{e}f\'{e}rencable\char`\"{}}\label{debug_8h_645e15ace462bfc653751f8b7868b734}




D\'{e}finition \`{a} la ligne 24 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par process\-Deref().\index{debug.h@{debug.h}!ERR_OP_UNCOMPATIBLE@{ERR\_\-OP\_\-UNCOMPATIBLE}}
\index{ERR_OP_UNCOMPATIBLE@{ERR\_\-OP\_\-UNCOMPATIBLE}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-OP\_\-UNCOMPATIBLE(s)~\char`\"{}types incompatibles pour l'op\'{e}ration '\char`\"{} s \char`\"{}'\char`\"{}}\label{debug_8h_9e3e1026b33ecccf10d15f5993931209}




D\'{e}finition \`{a} la ligne 23 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par process\-Div(), et process\-Mul().\index{debug.h@{debug.h}!ERR_REDECLARE@{ERR\_\-REDECLARE}}
\index{ERR_REDECLARE@{ERR\_\-REDECLARE}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-REDECLARE(strid)~\char`\"{}red\'{e}claration de '\char`\"{}+hash\-Table $\rightarrow$ get\-Var\-Name(strid)+\char`\"{}' ignor\'{e}e\char`\"{}}\label{debug_8h_e1e8d8ed96a09bfc8fd38ac6dc9c70ba}




D\'{e}finition \`{a} la ligne 19 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par CDecl\-Manager::declare().\index{debug.h@{debug.h}!ERR_REFAFF_REF@{ERR\_\-REFAFF\_\-REF}}
\index{ERR_REFAFF_REF@{ERR\_\-REFAFF\_\-REF}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-REFAFF\_\-REF~\char`\"{}l'affectation par r\'{e}f\'{e}rence doit prendre en entr\'{e}e un pointeur\char`\"{}}\label{debug_8h_b32b48eb96b0495250ad42800fcc5b33}




D\'{e}finition \`{a} la ligne 25 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par process\-Ref\-Aff().\index{debug.h@{debug.h}!ERR_UNDECLARED@{ERR\_\-UNDECLARED}}
\index{ERR_UNDECLARED@{ERR\_\-UNDECLARED}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define ERR\_\-UNDECLARED(strid)~\char`\"{}variable '\char`\"{} + hash\-Table $\rightarrow$ get\-Var\-Name(strid) + \char`\"{}' non d\'{e}clar\'{e}e\char`\"{}}\label{debug_8h_2fa8766ba3dcd639c15801dd07587c65}




D\'{e}finition \`{a} la ligne 18 du fichier debug.h.

R\'{e}f\'{e}renc\'{e} par process\-Aff(), et process\-Id().

\subsection{Documentation des fonctions}
\index{debug.h@{debug.h}!debugEcho@{debugEcho}}
\index{debugEcho@{debugEcho}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void debug\-Echo (string)}\label{debug_8h_04a6cd732450deef8d83bca2c4daa803}


Affiche un message de debug. 



D\'{e}finition \`{a} la ligne 79 du fichier debug.cpp.

R\'{e}f\'{e}rences DEBUG\_\-MSG, et debug\-Level.

R\'{e}f\'{e}renc\'{e} par main().\index{debug.h@{debug.h}!debugLexeme@{debugLexeme}}
\index{debugLexeme@{debugLexeme}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void debug\-Lexeme (char $\ast$)}\label{debug_8h_b36e0b2e446771bdc919679a2de676d5}


Affiche un lex\`{e}me lu,. 



D\'{e}finition \`{a} la ligne 85 du fichier debug.cpp.

R\'{e}f\'{e}rences DEBUG\_\-LEXEMES, et debug\-Level.\index{debug.h@{debug.h}!errorError@{errorError}}
\index{errorError@{errorError}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void error\-Error (string {\em str})}\label{debug_8h_93241a0588f7cca23d9541cda89a8008}


Erreur de type error (niveau 2). 

Une erreur est envoy\'{e}e quand une partie du code source n'est pas interpr\'{e}table. Elle rend impossible la compilation finale, mais le code continue d'\^{e}tre analys\'{e}. 

D\'{e}finition \`{a} la ligne 36 du fichier debug.cpp.

R\'{e}f\'{e}rences error\-Is\-Set.

R\'{e}f\'{e}renc\'{e} par CSymbol::convert(), CSymbol::convert2(), process\-Aff(), process\-Deref(), process\-Div(), process\-Id(), process\-Mul(), et process\-Ref\-Aff().\index{debug.h@{debug.h}!errorFatal@{errorFatal}}
\index{errorFatal@{errorFatal}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void error\-Fatal (string {\em str})}\label{debug_8h_8424682c6ad56bb1a34681973ab7c1ab}


Erreur de type fatal (niveau 3). 

Lorsqu'une erreur fatal survient, le compilateur ne peut continuer son travail. Il lib\`{e}re la m\'{e}moire du mieux qu'il peut et quitte. 

D\'{e}finition \`{a} la ligne 42 du fichier debug.cpp.

R\'{e}f\'{e}rences free\-Memory().

R\'{e}f\'{e}renc\'{e} par yyerror().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=101pt]{debug_8h_8424682c6ad56bb1a34681973ab7c1ab_cgraph}
\end{center}
\end{figure}
\index{debug.h@{debug.h}!errorWarning@{errorWarning}}
\index{errorWarning@{errorWarning}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void error\-Warning (string {\em str})}\label{debug_8h_b5db15ebc73ce3978f1dda10b4156e22}


Erreur de type warning (niveau 1). 

Un warning pr\'{e}vient l'utilisateur d'une erreur possible ou d'une op\'{e}ration ill\'{e}gale mais que le compilateur a tout de m\^{e}me pu analyser. Apr\`{e}s un warning, le code continue \`{a} \^{e}tre analys\'{e} et la compilation est toujours possible. 

D\'{e}finition \`{a} la ligne 31 du fichier debug.cpp.

R\'{e}f\'{e}renc\'{e} par CDecl\-Manager::declare(), process\-Add(), et process\-Sub().\index{debug.h@{debug.h}!freeMemory@{freeMemory}}
\index{freeMemory@{freeMemory}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void free\-Memory ()}\label{debug_8h_6fb3812c2de66e8962b6dee5144ffb03}


Lib\`{e}re la m\'{e}moire pour quitter le programme proprement. 



D\'{e}finition \`{a} la ligne 49 du fichier debug.cpp.

R\'{e}f\'{e}rences decl\-Manager, hash\-Table, instr\-Queue, et symbol\-Stack.

R\'{e}f\'{e}renc\'{e} par error\-Fatal(), et main().\index{debug.h@{debug.h}!setDebugLevel@{setDebugLevel}}
\index{setDebugLevel@{setDebugLevel}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void set\-Debug\-Level (int {\em argc}, char $\ast$$\ast$ {\em argv})}\label{debug_8h_2dd74ef7c3e1afc8208a65e5bebbc3ae}


Fixe le niveau de debug. 

-d : afficher les messages de debug -l : afficher les lex\`{e}mes lus 

D\'{e}finition \`{a} la ligne 66 du fichier debug.cpp.

R\'{e}f\'{e}rences DEBUG\_\-LEXEMES, DEBUG\_\-MSG, et debug\-Level.

R\'{e}f\'{e}renc\'{e} par main().\index{debug.h@{debug.h}!yyerror@{yyerror}}
\index{yyerror@{yyerror}!debug.h@{debug.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int yyerror (char $\ast$ {\em str})}\label{debug_8h_a95fedf9a13c21bea1338142abefcb5a}


Fonction d'erreur de yacc/bison, on \char`\"{}redirige\char`\"{} l'erreur vers error\-Fatal. 



D\'{e}finition \`{a} la ligne 58 du fichier debug.cpp.

R\'{e}f\'{e}rences error\-Fatal().

R\'{e}f\'{e}renc\'{e} par yyparse().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=144pt]{debug_8h_a95fedf9a13c21bea1338142abefcb5a_cgraph}
\end{center}
\end{figure}
